Expose the target directory in cargo metadata
authorSteven Fackler <sfackler@palantir.com>
Wed, 10 May 2017 16:36:23 +0000 (09:36 -0700)
committerSteven Fackler <sfackler@palantir.com>
Wed, 10 May 2017 17:14:57 +0000 (10:14 -0700)
Closes #4017

src/cargo/ops/cargo_output_metadata.rs
tests/metadata.rs

index bd48cb0a4b9150906202fa1597d843afe04157be..1dca07451ca45d0d5b0080cffef4f142485add51 100644 (file)
@@ -37,6 +37,7 @@ fn metadata_no_deps(ws: &Workspace,
         packages: ws.members().cloned().collect(),
         workspace_members: ws.members().map(|pkg| pkg.package_id().clone()).collect(),
         resolve: None,
+        target_directory: ws.target_dir().display().to_string(),
         version: VERSION,
     })
 }
@@ -63,6 +64,7 @@ fn metadata_full(ws: &Workspace,
             resolve: resolve,
             root: ws.current_opt().map(|pkg| pkg.package_id().clone()),
         }),
+        target_directory: ws.target_dir().display().to_string(),
         version: VERSION,
     })
 }
@@ -72,6 +74,7 @@ pub struct ExportInfo {
     packages: Vec<Package>,
     workspace_members: Vec<PackageId>,
     resolve: Option<MetadataResolve>,
+    target_directory: String,
     version: u32,
 }
 
index 04216a39d22c7f49d7a603f13ce7edc576df7f64..25a0edf01e596adc6ccc0f2dcc6948b70a276437 100644 (file)
@@ -49,6 +49,7 @@ fn cargo_metadata_simple() {
             ],
             "root": "foo 0.5.0 (path+file:[..]foo)"
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#));
 }
@@ -121,6 +122,7 @@ crate-type = ["lib", "staticlib"]
             ],
             "root": "foo 0.5.0 (path+file:[..]foo)"
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#));
 }
@@ -269,6 +271,7 @@ fn cargo_metadata_with_deps_and_version() {
             ],
             "root": "foo 0.5.0 (path+file:[..]foo)"
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#));
 }
@@ -329,6 +332,7 @@ name = "ex"
                 }
             ]
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#));
 }
@@ -390,6 +394,7 @@ crate-type = ["rlib", "dylib"]
                 }
             ]
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#));
 }
@@ -464,6 +469,7 @@ fn workspace_metadata() {
             ],
             "root": null
         },
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#))
 }
@@ -526,6 +532,7 @@ fn workspace_metadata_no_deps() {
         ],
         "workspace_members": ["baz 0.5.0 (path+file:[..]baz)", "bar 0.5.0 (path+file:[..]bar)"],
         "resolve": null,
+        "target_directory": "[..]foo[/]target",
         "version": 1
     }"#))
 }
@@ -566,6 +573,7 @@ const MANIFEST_OUTPUT: &'static str=
     }],
     "workspace_members": [ "foo 0.5.0 (path+file:[..]foo)" ],
     "resolve": null,
+    "target_directory": "[..]foo[/]target",
     "version": 1
 }"#;